import java.awt.*;
import java.awt.event.*;
import java.util.*;

/**
 * 
 * <p>
 * Representacao grafica de um BotaoDeEmergenciainstalado em Elevador.
 * </p>
 */
class ArranjoBotaoDeEmergencia {

  ///////////////////////////////////////
  // attributes


/**
 * <p>
 * Representa o proprio BotaoDeEmergencia(selecionado indica armado).
 * </p>
 * 
 */
    private Checkbox botaoDeEmergencia; 

/**
 * <p>
 * Representa o agrupamento das representacoes graficas relacionadas com o
 * Botao.
 * </p>
 * 
 */
    private Panel panel; 

/**
 * <p>
 * Indica o Elevador em que se encontra instalado o Botao. Os elevadores
 * sao enumerados a partir de 1.
 * </p>
 * 
 */
    private int indElevador; 

   ///////////////////////////////////////
   // associations

/**
 * <p>
 * Representacao grafica do Elevador 'a qual se encontra agregada a
 * representacao grafica do Botao.
 * </p>
 * 
 */
    private RepresentacaoElevador representacaoElevador; 


  ///////////////////////////////////////
  // operations


/**
 * <p>
 * Gera uma instancia de ArranjoBotaoInternoAndar.
 * </p>
 * 
 * @param estadoElevador - representacao grafica do Elevador 'a qual se
 * encontra agregada a representacao grafica do Botao.
 * 
 * @param representacaoElevador 
 * @param indElevador - indicador do Elevador em que se encontra instalado
 * o Botao.
 * 
 * @param andar - andar associado ao Botao.
 * 
 * @return uma instancia de ArranjoBotaoInternoAndar.
 */
    public  ArranjoBotaoDeEmergencia(RepresentacaoElevador representacaoElevador, int indElevador) {        
        GridLayout gridPanel;
        this.representacaoElevador = representacaoElevador;
        this.indElevador = indElevador;

        gridPanel = new GridLayout(1, 2);
        panel = new Panel(gridPanel);
        botaoDeEmergencia = new Checkbox();
        botaoDeEmergencia.addItemListener(new ComandoBotaoDeEmergencia(this, botaoDeEmergencia));
        panel.add(botaoDeEmergencia);
    } // end ArranjoBotaoInternoAndar        

/**
 * <p>
 * Recebe a informacao de que a sua representacao do Botao foi acionada e
 * repassa tal informacao.
 * </p>
 */
    public void registrarAcionamento() {        
        representacaoElevador.registrarAcionamentoBotaoDeEmergencia();
    } // end registrarAcionamento        

/**
 * <p>
 * Retorna o agrupamento (Panel) das representacoes graficas relacionadas
 * com Botao.
 * </p>
 * 
 * @return uma referencia Panel.
 */
    public Panel getPanel() {        
        return panel;
    } // end getPanel        

/**
 * <p>
 * Recebe a solicitacao de representar graficamente que o BotaoDeEmergencia
 * foi armado.
 * </p>
 */
    public void armarBotaoDeEmergencia() {        
        botaoDeEmergencia.setState(true);
    } // end armarBotaoDeEmergencia       

/**
 * <p>
 * Recebe a solicitacao de representar graficamente que o BotaoDeEmergencia
 * foi desarmado.
 * </p>
 */
    public void desarmarBotaoDeEmergencia() {        
        botaoDeEmergencia.setState(false);
    } // end desarmarBotaoDeEmergencia       

/**
 * <p>
 * Representa na interface de usuario um novo estado da Porta no andar
 * associado ao Botao.
 * </p>
 * 
 * @param fechada - true se a Porta encontra-se fechada.
 */
    public void registrarEstadoPorta(boolean fechada) {        
//        if (fechada) 
//        	estadoPorta.setText(InterfaceDeUsuarioSimples.portaFechada);
//        else 
//        	estadoPorta.setText(InterfaceDeUsuarioSimples.portaAberta);
    } // end registrarEstadoPorta        

/**
 * <p>
 * Representa na interface de usuario a ausencia do Elevador no andar
 * representado pelo Botao.
 * </p>
 */
    public void removerElevador() {        
//        estadoPresencaElevador.setText(InterfaceDeUsuarioSimples.elevadorAusente);
    } // end removerElevador        

/**
 * <p>
 * Representa na interface de usuario a ausencia do Elevador no andar
 * representado pelo Botao.
 * </p>
 */
    public void adicionarElevador() {        
//        estadoPresencaElevador.setText(InterfaceDeUsuarioSimples.elevadorPresente);
    } // end adicionarElevador        


 } // end ArranjoBotaoInternoAndar



